package com.sxf.utils;

import cn.hutool.cron.pattern.CronPatternUtil;
import cn.hutool.crypto.SecureUtil;
import com.google.common.hash.Hashing;
import com.sxf.consts.Consts;
import org.apache.commons.codec.Charsets;
import org.apache.commons.lang3.RandomStringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.UUID;
import java.util.regex.Pattern;

public class YtUtil {

    private static final Logger logger = LoggerFactory.getLogger(YtUtil.class);

    private static final String DEF_PASSWORD = "Aa12345.";

    /**
     * @return 生成密码需要的盐
     */
    public static String getSalt() {
        return RandomStringUtils.randomAlphabetic(8);
    }

    /**
     * @param salt
     * @param pwdPlain
     * @return sha256
     */
    public static String sha256(String salt, String pwdPlain) {

        return Hashing.sha256().newHasher().putString(salt + pwdPlain, Charsets.UTF_8).hash().toString();
    }

    /**
     * 获取uuid
     *
     * @return
     */
    public static String getUuid() {
        return UUID.randomUUID().toString().toUpperCase().replaceAll(Consts.SHORT_BAR, Consts.EMPTY);
    }

    public static String getDefaultPassword() {
        return SecureUtil.sha256(DEF_PASSWORD);
    }


    public static Boolean validStrPattern(String rex,String source){
        if(rex == null || source == null){
            return false;
        }
        Boolean flag = false;
        Pattern pattern = Pattern.compile(rex);
        if (pattern.matcher(source).matches()) {
            flag = true;
        }
        return flag;
    }

//    /**
//     * 判定mapperMethod是否发生唯一冲突
//     */
//    public static boolean judgeUnique(Supplier<Integer> mapperMethod) {
//        try {
//            mapperMethod.get();
//        } catch (DuplicateKeyException e) {
//            return true;
//        }
//        return false;
//    }
//
//    /**
//     * 判定mapperMethod是否发生唯一冲突并抛出异常
//     */
//    public static void judgeUniqueThrow(Supplier<Integer> mapperMethod, Supplier<? extends BaseRuntimeException> ex) {
//        try {
//            mapperMethod.get();
//        } catch (DuplicateKeyException e) {
//            throw ex.get();
//        }
//    }

    public static void main(String[] args) {
        System.out.println(getDefaultPassword());
    }
}
